﻿using Ext.Net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Views_TypeOfPoliticalTheories : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindData();
        }
    }

    protected void BindData()
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                List<PoliticalOfTheory> list = db.PoliticalOfTheories.ToList<PoliticalOfTheory>();
                list.Sort((new SortPoliticalOfTheories()).Compare);

                StorePoliticalTheories.DataSource = list;
                StorePoliticalTheories.DataBind();
                
                gridPanelPoliticalTheories.ActiveIndex = -1;
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void StorePoliticalTheories_ReadData(object sender, StoreReadDataEventArgs e)
    {
        BindData();
    }

    protected void RowSelected(object sender, DirectEventArgs e)
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = gridPanelPoliticalTheories.SelectionModel.Primary as RowSelectionModel;
                if (rsm.SelectedRow != null)
                {
                    int poliID = Int32.Parse(rsm.SelectedRow.RecordID);
                    PoliticalOfTheory poliDisplay = db.PoliticalOfTheories.Single(p => p.PoliID == poliID);

                    lblViewPoliID.Text = poliDisplay.PoliID.ToString();
                    lblViewNameOfPoli.Text = poliDisplay.NameOfPoli.ToString();
                    lblViewDescriptons.Text = poliDisplay.Descriptons.ToString();
                    chkViewStatusOfPoli.Checked = Boolean.Parse(poliDisplay.StatusOfPoli.ToString());
                }
                else
                {
                    ResetControls_ViewInfor();
                    return;
                }
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void btnToobarAdd_DirectClick(object sender, EventArgs e)
    {
        windowAddPoliticalTheories.Show();
        this.ResetControls_WindowAdd();
    }

    [DirectMethod]
    public void AddPoliticalTheories_DirectClick()
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                foreach (var item in db.PoliticalOfTheories)
                {
                    if (txtFormAddNameOfPoli.Text.Trim().ToLower().Equals(item.NameOfPoli.ToLower()))
                    {
                        lblFormAddMsg.Text = "Tên lý luận chính trị đã tồn tại, hảy nhập lại";
                        txtFormAddNameOfPoli.Focus(true, 0);
                        return;
                    }
                }

                PoliticalOfTheory politicalTheory = new PoliticalOfTheory()
                {
                    NameOfPoli = txtFormAddNameOfPoli.Text.Trim(),
                    Descriptons = txtFormAddDescriptons.Text.Trim(),
                    StatusOfPoli = chkFormAddStatusOfPoli.Checked
                };
                db.PoliticalOfTheories.Add(politicalTheory);
                db.SaveChanges();

                windowAddPoliticalTheories.Hidden = true;
                windowAddPoliticalTheories.Dispose();

                BindData();
                X.Msg.Notify("Thông báo", "Thêm mới lý luận chính trị thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void btnAddReset_DirectClick(object sender, EventArgs e)
    {
        ResetControls_WindowAdd();
    }

    protected void btnAddCancel_DirectClick(object sender, EventArgs e)
    {
        windowAddPoliticalTheories.Hidden = true;
        windowAddPoliticalTheories.Dispose();
    }

    protected void btnToobarUpdate_DirectClick(object sender, EventArgs e)
    {
        try
        {
            lblFormUpdateMsg.Text = "";
            if (txtFormUpdateNameOfPoli.Text.Length == 0 || txtFormUpdateNameOfPoli.Text.Length != 0)
            {
                txtFormUpdateNameOfPoli.Focus(true, 100);
            }
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = gridPanelPoliticalTheories.SelectionModel.Primary as RowSelectionModel;
                try
                {
                    if (rsm.SelectedRow == null)
                    {
                        windowUpdatePoliticalTheories.Hidden = true;
                        windowUpdatePoliticalTheories.Dispose();
                        X.Msg.Alert("Thông báo", "Bạn chưa chọn bản ghi để chỉnh sửa").Show();
                        return;
                    }

                    windowUpdatePoliticalTheories.Show();

                    int poliID = Int32.Parse(rsm.SelectedRow.RecordID);
                    PoliticalOfTheory poliDisplay = db.PoliticalOfTheories.Single(p => p.PoliID == poliID);

                    txtFormUpdateNameOfPoli.Text = poliDisplay.NameOfPoli.ToString();
                    txtFormUpdateDescriptons.Text = poliDisplay.Descriptons.ToString();
                    chkFormUpdateStatusOfPoli.Checked = Boolean.Parse(poliDisplay.StatusOfPoli.ToString());
                }
                catch (Exception)
                {
                    windowUpdatePoliticalTheories.Hidden = true;
                    windowUpdatePoliticalTheories.Dispose();
                    X.Msg.Alert("Thông báo", "Bạn chưa chọn bản ghi để cập nhật").Show();
                    return;
                }
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    [DirectMethod]
    public void UpdatePoliticalTheories_DirectClick()
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                RowSelectionModel rsm = gridPanelPoliticalTheories.SelectionModel.Primary as RowSelectionModel;
                try
                {
                    if (rsm.SelectedRow == null)
                    {
                        X.Msg.Alert("Thông báo", "Bạn chưa chọn bản ghi để chỉnh sửa").Show();
                        return;
                    }
                }
                catch (Exception)
                {
                    X.Msg.Alert("Thông báo", "Bạn chưa chọn bản ghi để chỉnh sửa").Show();
                    return;
                }
                int poliID = Int32.Parse(rsm.SelectedRow.RecordID);
                PoliticalOfTheory poliUpdate = db.PoliticalOfTheories.Single(p => p.PoliID == poliID);
                String nameUpdate = txtFormUpdateNameOfPoli.Text.Trim();
                foreach (var item in db.PoliticalOfTheories)
                {
                    if (item.NameOfPoli.ToLower().Equals(nameUpdate.ToLower()) && item.PoliID != poliUpdate.PoliID)
                    {
                        lblFormUpdateMsg.Text = "Tên lý luận chính trị đã tồn tại, hãy nhập mã mới.";
                        txtFormUpdateNameOfPoli.Focus(true, 100);
                        return;
                    }
                }
                poliUpdate.NameOfPoli = txtFormUpdateNameOfPoli.Text.Trim();
                poliUpdate.Descriptons = txtFormUpdateDescriptons.Text.Trim();
                poliUpdate.StatusOfPoli = chkFormUpdateStatusOfPoli.Checked;

                db.SaveChanges();

                windowUpdatePoliticalTheories.Hidden = true;
                windowUpdatePoliticalTheories.Dispose();

                BindData();

                X.Msg.Notify("Thông báo", "Cập nhật lý luận chính trị thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    protected void btnUpdateCancel_DirectClick(object sender, EventArgs e)
    {
        windowUpdatePoliticalTheories.Hidden = true;
        windowUpdatePoliticalTheories.Dispose();
    }

    protected void btnToobarDelete_DirectClick(object sender, EventArgs e)
    {
        try
        {
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                try
                {
                    RowSelectionModel rsm = gridPanelPoliticalTheories.SelectionModel.Primary as RowSelectionModel;
                    if (rsm.SelectedRow != null)
                    {
                        int poliIDDelete = Int32.Parse(rsm.SelectedRow.RecordID);
                        PoliticalOfTheory poliDelete = db.PoliticalOfTheories.Single(p => p.PoliID == poliIDDelete);
                        X.Msg.Confirm("Thông báo hệ thống", String.Format("Bạn có muốn xóa lý luận chính trị đã chọn ? [{0}]", poliDelete.NameOfPoli),
                        new MessageBoxButtonsConfig()
                        {
                            Yes = new MessageBoxButtonConfig
                            {
                                Text = "Xóa",
                                Handler = "App.direct.DoYes_DeletePoliticalTheories();"
                            },
                            No = new MessageBoxButtonConfig
                            {
                                Text = "Hủy bỏ"
                            }
                        }).Show();
                    }
                    else
                    {
                        X.Msg.Alert("Thông báo", "Bạn chưa chọn bản ghi để xóa thông tin").Show();
                        return;
                    }
                }
                catch (Exception)
                {
                    X.Msg.Alert("Thông báo", "Bạn chưa chọn bản ghi để xóa thông tin").Show();
                    return;
                }
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    [DirectMethod]
    public void DoYes_DeletePoliticalTheories()
    {
        try
        {
            RowSelectionModel rsm = gridPanelPoliticalTheories.SelectionModel.Primary as RowSelectionModel;
            using (ManagerEmployeesEntities db = new ManagerEmployeesEntities())
            {
                int PoliIDSelectDelete = Int32.Parse(rsm.SelectedRow.RecordID);
                PoliticalOfTheory poliDelete = db.PoliticalOfTheories.Single(p => p.PoliID == PoliIDSelectDelete);
                db.PoliticalOfTheories.Remove(poliDelete);
                db.SaveChanges();
                BindData();
                ResetControls_ViewInfor();
                X.Msg.Notify("Thông báo", "Xóa lý luận chính trị thành công").Show();
            }
        }
        catch (Exception)
        {
            X.Msg.Alert("Thông báo hệ thống", "Hệ thống đang bận, hảy thử lại sau").Show();
        }
    }

    private void ResetControls_WindowAdd()
    {
        if (txtFormAddNameOfPoli.Text.Length == 0)
        {
            txtFormAddNameOfPoli.Focus(true, 100);
        }

        txtFormAddNameOfPoli.Text = "";
        txtFormAddDescriptons.Text = "";
        chkFormAddStatusOfPoli.Checked = false;

        lblFormAddMsg.Text = "";
    }

    private void ResetControls_ViewInfor()
    {
        lblViewPoliID.Text = "";
        lblViewNameOfPoli.Text = "";
        lblViewDescriptons.Text = "";
        chkViewStatusOfPoli.Checked = false;
    }
}